<!DOCTYPE HTML>

<html lang="en">
<head>

<title>TokenBasedRememberMeServices (spring-security-docs 5.6.3 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="TokenBasedRememberMeServices (spring-security-docs 5.6.3 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">

<div class="topNav"><a id="navbar.top">

</a>
<div class="skipNav"><a href="TokenBasedRememberMeServices.html#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="TokenBasedRememberMeServices.html#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="TokenBasedRememberMeServices.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="TokenBasedRememberMeServices.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="TokenBasedRememberMeServices.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="TokenBasedRememberMeServices.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">

</a></div>

</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>

<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.springframework.security.web.authentication.rememberme</a></div>
<h2 title="Class TokenBasedRememberMeServices" class="title">Class TokenBasedRememberMeServices</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="AbstractRememberMeServices.html" title="class in org.springframework.security.web.authentication.rememberme">org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices</a></li>
<li>
<ul class="inheritance">
<li>org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code>org.springframework.beans.factory.Aware</code>, <code>org.springframework.beans.factory.InitializingBean</code>, <code>org.springframework.context.MessageSourceAware</code>, <code><a href="../logout/LogoutHandler.html" title="interface in org.springframework.security.web.authentication.logout">LogoutHandler</a></code>, <code><a href="../RememberMeServices.html" title="interface in org.springframework.security.web.authentication">RememberMeServices</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">TokenBasedRememberMeServices</span>
extends <a href="AbstractRememberMeServices.html" title="class in org.springframework.security.web.authentication.rememberme">AbstractRememberMeServices</a></pre>
<div class="block">Identifies previously remembered users by a Base-64 encoded cookie.
<p>
This implementation does not rely on an external database, so is attractive for simple
applications. The cookie will be valid for a specific period from the date of the last
<a href="AbstractRememberMeServices.html#loginSuccess(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.security.core.Authentication)"><code>AbstractRememberMeServices.loginSuccess(HttpServletRequest, HttpServletResponse, Authentication)</code></a>. As per
the interface contract, this method will only be called when the principal completes a
successful interactive authentication. As such the time period commences from the last
authentication attempt where they furnished credentials - not the time period they last
logged in via remember-me. The implementation will only send a remember-me token if the
parameter defined by <a href="AbstractRememberMeServices.html#setParameter(java.lang.String)"><code>AbstractRememberMeServices.setParameter(String)</code></a> is present.
<p>
An <a href="../../../core/userdetails/UserDetailsService.html" title="interface in org.springframework.security.core.userdetails"><code>UserDetailsService</code></a> is required
by this implementation, so that it can construct a valid <code>Authentication</code>
from the returned <a href="../../../core/userdetails/UserDetails.html" title="interface in org.springframework.security.core.userdetails"><code>UserDetails</code></a>.
This is also necessary so that the user's password is available and can be checked as
part of the encoded cookie.
<p>
The cookie encoded by this implementation adopts the following form:
<pre> username + &quot;:&quot; + expiryTime + &quot;:&quot;
                + Md5Hex(username + &quot;:&quot; + expiryTime + &quot;:&quot; + password + &quot;:&quot; + key)
 </pre>
<p>
As such, if the user changes their password, any remember-me token will be invalidated.
Equally, the system administrator may invalidate every remember-me token on issue by
changing the key. This provides some reasonable approaches to recovering from a
remember-me token being left on a public machine (e.g. kiosk system, Internet cafe
etc). Most importantly, at no time is the user's password ever sent to the user agent,
providing an important security safeguard. Unfortunately the username is necessary in
this implementation (as we do not want to rely on a database for remember-me services).
High security applications should be aware of this occasionally undesired disclosure of
a valid username.
<p>
This is a basic remember-me implementation which is suitable for many applications.
However, we recommend a database-based implementation if you require a more secure
remember-me approach (see <a href="PersistentTokenBasedRememberMeServices.html" title="class in org.springframework.security.web.authentication.rememberme"><code>PersistentTokenBasedRememberMeServices</code></a>).
<p>
By default the tokens will be valid for 14 days from the last successful authentication
attempt. This can be changed using <a href="AbstractRememberMeServices.html#setTokenValiditySeconds(int)"><code>AbstractRememberMeServices.setTokenValiditySeconds(int)</code></a>. If this value
is less than zero, the <tt>expiryTime</tt> will remain at 14 days, but the negative
value will be used for the <tt>maxAge</tt> property of the cookie, meaning that it will
not be stored when the browser is closed.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">

</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices">

</a>
<h3>Fields inherited from class&nbsp;org.springframework.security.web.authentication.rememberme.<a href="AbstractRememberMeServices.html" title="class in org.springframework.security.web.authentication.rememberme">AbstractRememberMeServices</a></h3>
<code><a href="AbstractRememberMeServices.html#DEFAULT_PARAMETER">DEFAULT_PARAMETER</a>, <a href="AbstractRememberMeServices.html#logger">logger</a>, <a href="AbstractRememberMeServices.html#messages">messages</a>, <a href="AbstractRememberMeServices.html#SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY">SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY</a>, <a href="AbstractRememberMeServices.html#TWO_WEEKS_S">TWO_WEEKS_S</a></code></li>
</ul>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">

</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="TokenBasedRememberMeServices.html#%3Cinit%3E(java.lang.String,org.springframework.security.core.userdetails.UserDetailsService)">TokenBasedRememberMeServices</a></span>&#8203;(java.lang.String&nbsp;key,
<a href="../../../core/userdetails/UserDetailsService.html" title="interface in org.springframework.security.core.userdetails">UserDetailsService</a>&nbsp;userDetailsService)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">

</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="TokenBasedRememberMeServices.html#calculateLoginLifetime(javax.servlet.http.HttpServletRequest,org.springframework.security.core.Authentication)">calculateLoginLifetime</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;request,
<a href="../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a>&nbsp;authentication)</code></th>
<td class="colLast">
<div class="block">Calculates the validity period in seconds for a newly generated remember-me login.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="TokenBasedRememberMeServices.html#isTokenExpired(long)">isTokenExpired</a></span>&#8203;(long&nbsp;tokenExpiryTime)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="TokenBasedRememberMeServices.html#makeTokenSignature(long,java.lang.String,java.lang.String)">makeTokenSignature</a></span>&#8203;(long&nbsp;tokenExpiryTime,
java.lang.String&nbsp;username,
java.lang.String&nbsp;password)</code></th>
<td class="colLast">
<div class="block">Calculates the digital signature to be put in the cookie.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="TokenBasedRememberMeServices.html#onLoginSuccess(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.security.core.Authentication)">onLoginSuccess</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response,
<a href="../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a>&nbsp;successfulAuthentication)</code></th>
<td class="colLast">
<div class="block">Called from loginSuccess when a remember-me login has been requested.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected <a href="../../../core/userdetails/UserDetails.html" title="interface in org.springframework.security.core.userdetails">UserDetails</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="TokenBasedRememberMeServices.html#processAutoLoginCookie(java.lang.String%5B%5D,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">processAutoLoginCookie</a></span>&#8203;(java.lang.String[]&nbsp;cookieTokens,
javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)</code></th>
<td class="colLast">
<div class="block">Called from autoLogin to process the submitted persistent login cookie.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="TokenBasedRememberMeServices.html#retrievePassword(org.springframework.security.core.Authentication)">retrievePassword</a></span>&#8203;(<a href="../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a>&nbsp;authentication)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="TokenBasedRememberMeServices.html#retrieveUserName(org.springframework.security.core.Authentication)">retrieveUserName</a></span>&#8203;(<a href="../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a>&nbsp;authentication)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices">

</a>
<h3>Methods inherited from class&nbsp;org.springframework.security.web.authentication.rememberme.<a href="AbstractRememberMeServices.html" title="class in org.springframework.security.web.authentication.rememberme">AbstractRememberMeServices</a></h3>
<code><a href="AbstractRememberMeServices.html#afterPropertiesSet()">afterPropertiesSet</a>, <a href="AbstractRememberMeServices.html#autoLogin(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">autoLogin</a>, <a href="AbstractRememberMeServices.html#cancelCookie(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">cancelCookie</a>, <a href="AbstractRememberMeServices.html#createSuccessfulAuthentication(javax.servlet.http.HttpServletRequest,org.springframework.security.core.userdetails.UserDetails)">createSuccessfulAuthentication</a>, <a href="AbstractRememberMeServices.html#decodeCookie(java.lang.String)">decodeCookie</a>, <a href="AbstractRememberMeServices.html#encodeCookie(java.lang.String%5B%5D)">encodeCookie</a>, <a href="AbstractRememberMeServices.html#extractRememberMeCookie(javax.servlet.http.HttpServletRequest)">extractRememberMeCookie</a>, <a href="AbstractRememberMeServices.html#getAuthenticationDetailsSource()">getAuthenticationDetailsSource</a>, <a href="AbstractRememberMeServices.html#getCookieName()">getCookieName</a>, <a href="AbstractRememberMeServices.html#getKey()">getKey</a>, <a href="AbstractRememberMeServices.html#getParameter()">getParameter</a>, <a href="AbstractRememberMeServices.html#getTokenValiditySeconds()">getTokenValiditySeconds</a>, <a href="AbstractRememberMeServices.html#getUserDetailsService()">getUserDetailsService</a>, <a href="AbstractRememberMeServices.html#loginFail(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">loginFail</a>, <a href="AbstractRememberMeServices.html#loginSuccess(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.security.core.Authentication)">loginSuccess</a>, <a href="AbstractRememberMeServices.html#logout(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.security.core.Authentication)">logout</a>, <a href="AbstractRememberMeServices.html#onLoginFail(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">onLoginFail</a>, <a href="AbstractRememberMeServices.html#rememberMeRequested(javax.servlet.http.HttpServletRequest,java.lang.String)">rememberMeRequested</a>, <a href="AbstractRememberMeServices.html#setAlwaysRemember(boolean)">setAlwaysRemember</a>, <a href="AbstractRememberMeServices.html#setAuthenticationDetailsSource(org.springframework.security.authentication.AuthenticationDetailsSource)">setAuthenticationDetailsSource</a>, <a href="AbstractRememberMeServices.html#setAuthoritiesMapper(org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper)">setAuthoritiesMapper</a>, <a href="AbstractRememberMeServices.html#setCookie(java.lang.String%5B%5D,int,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">setCookie</a>, <a href="AbstractRememberMeServices.html#setCookieDomain(java.lang.String)">setCookieDomain</a>, <a href="AbstractRememberMeServices.html#setCookieName(java.lang.String)">setCookieName</a>, <a href="AbstractRememberMeServices.html#setMessageSource(org.springframework.context.MessageSource)">setMessageSource</a>, <a href="AbstractRememberMeServices.html#setParameter(java.lang.String)">setParameter</a>, <a href="AbstractRememberMeServices.html#setTokenValiditySeconds(int)">setTokenValiditySeconds</a>, <a href="AbstractRememberMeServices.html#setUserDetailsChecker(org.springframework.security.core.userdetails.UserDetailsChecker)">setUserDetailsChecker</a>, <a href="AbstractRememberMeServices.html#setUseSecureCookie(boolean)">setUseSecureCookie</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">

</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">

</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(java.lang.String,org.springframework.security.core.userdetails.UserDetailsService)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>TokenBasedRememberMeServices</h4>
<pre>public&nbsp;TokenBasedRememberMeServices&#8203;(java.lang.String&nbsp;key,
                                    <a href="../../../core/userdetails/UserDetailsService.html" title="interface in org.springframework.security.core.userdetails">UserDetailsService</a>&nbsp;userDetailsService)</pre>
</li>
</ul>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">

</a>
<h3>Method Detail</h3>
<a id="processAutoLoginCookie(java.lang.String[],javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>processAutoLoginCookie</h4>
<pre class="methodSignature">protected&nbsp;<a href="../../../core/userdetails/UserDetails.html" title="interface in org.springframework.security.core.userdetails">UserDetails</a>&nbsp;processAutoLoginCookie&#8203;(java.lang.String[]&nbsp;cookieTokens,
                                             javax.servlet.http.HttpServletRequest&nbsp;request,
                                             javax.servlet.http.HttpServletResponse&nbsp;response)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="AbstractRememberMeServices.html#processAutoLoginCookie(java.lang.String%5B%5D,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">AbstractRememberMeServices</a></code></span></div>
<div class="block">Called from autoLogin to process the submitted persistent login cookie. Subclasses
should validate the cookie and perform any additional management required.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="AbstractRememberMeServices.html#processAutoLoginCookie(java.lang.String%5B%5D,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">processAutoLoginCookie</a></code>&nbsp;in class&nbsp;<code><a href="AbstractRememberMeServices.html" title="class in org.springframework.security.web.authentication.rememberme">AbstractRememberMeServices</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cookieTokens</code> - the decoded and tokenized cookie value</dd>
<dd><code>request</code> - the request</dd>
<dd><code>response</code> - the response, to allow the cookie to be modified if required.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the UserDetails for the corresponding user account if the cookie was
validated successfully.</dd>
</dl>
</li>
</ul>
<a id="makeTokenSignature(long,java.lang.String,java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>makeTokenSignature</h4>
<pre class="methodSignature">protected&nbsp;java.lang.String&nbsp;makeTokenSignature&#8203;(long&nbsp;tokenExpiryTime,
                                              java.lang.String&nbsp;username,
                                              java.lang.String&nbsp;password)</pre>
<div class="block">Calculates the digital signature to be put in the cookie. Default value is MD5
("username:tokenExpiryTime:password:key")</div>
</li>
</ul>
<a id="isTokenExpired(long)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>isTokenExpired</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;isTokenExpired&#8203;(long&nbsp;tokenExpiryTime)</pre>
</li>
</ul>
<a id="onLoginSuccess(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.security.core.Authentication)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>onLoginSuccess</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;onLoginSuccess&#8203;(javax.servlet.http.HttpServletRequest&nbsp;request,
                           javax.servlet.http.HttpServletResponse&nbsp;response,
                           <a href="../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a>&nbsp;successfulAuthentication)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="AbstractRememberMeServices.html#onLoginSuccess(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.security.core.Authentication)">AbstractRememberMeServices</a></code></span></div>
<div class="block">Called from loginSuccess when a remember-me login has been requested. Typically
implemented by subclasses to set a remember-me cookie and potentially store a
record of it if the implementation requires this.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="AbstractRememberMeServices.html#onLoginSuccess(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.security.core.Authentication)">onLoginSuccess</a></code>&nbsp;in class&nbsp;<code><a href="AbstractRememberMeServices.html" title="class in org.springframework.security.web.authentication.rememberme">AbstractRememberMeServices</a></code></dd>
</dl>
</li>
</ul>
<a id="calculateLoginLifetime(javax.servlet.http.HttpServletRequest,org.springframework.security.core.Authentication)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>calculateLoginLifetime</h4>
<pre class="methodSignature">protected&nbsp;int&nbsp;calculateLoginLifetime&#8203;(javax.servlet.http.HttpServletRequest&nbsp;request,
                                     <a href="../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a>&nbsp;authentication)</pre>
<div class="block">Calculates the validity period in seconds for a newly generated remember-me login.
After this period (from the current time) the remember-me login will be considered
expired. This method allows customization based on request parameters supplied with
the login or information in the <tt>Authentication</tt> object. The default value
is just the token validity period property, <tt>tokenValiditySeconds</tt>.
<p>
The returned value will be used to work out the expiry time of the token and will
also be used to set the <tt>maxAge</tt> property of the cookie.
See SEC-485.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the request passed to onLoginSuccess</dd>
<dd><code>authentication</code> - the successful authentication object.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the lifetime in seconds.</dd>
</dl>
</li>
</ul>
<a id="retrieveUserName(org.springframework.security.core.Authentication)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>retrieveUserName</h4>
<pre class="methodSignature">protected&nbsp;java.lang.String&nbsp;retrieveUserName&#8203;(<a href="../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a>&nbsp;authentication)</pre>
</li>
</ul>
<a id="retrievePassword(org.springframework.security.core.Authentication)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>retrievePassword</h4>
<pre class="methodSignature">protected&nbsp;java.lang.String&nbsp;retrievePassword&#8203;(<a href="../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a>&nbsp;authentication)</pre>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>

<footer role="contentinfo">
<nav role="navigation">

<div class="bottomNav"><a id="navbar.bottom">

</a>
<div class="skipNav"><a href="TokenBasedRememberMeServices.html#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="TokenBasedRememberMeServices.html#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="TokenBasedRememberMeServices.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="TokenBasedRememberMeServices.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="TokenBasedRememberMeServices.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="TokenBasedRememberMeServices.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">

</a></div>

</nav>
</footer>
<script>if (window.parent == window) {(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-2728886-23', 'auto', {'siteSpeedSampleRate': 100});ga('send', 'pageview');}</script><script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"7040cf172994980c","token":"bffcb8a918ae4755926f76178bfbd26b","version":"2021.12.0","si":100}' crossorigin="anonymous"></script>
</body>
</html>
